import Mock from 'mockjs'
import { GET } from '@/constant'
import qs from 'qs'
import * as QueryString from 'querystring'
// 基本配置
// Mock.setup 配置拦截Ajax请求时的行为
// timeout: 指定被拦截的Ajax请求的响应事件, 单位事件为毫秒
Mock.setup({
  timeout: '500-1000'     // 随机延时500-1000ms之间, 模拟网络延迟
})

// 拦截接口   /my/test
// 1.接口地址规则, 需要匹配到它
// 2.请求方式
// 3.返回数据(函数返回数据)     // 通过正则匹配方式去匹配 /\/my\/test/, 省略了前面baseURL
Mock.mock(/\/my\/test/, GET, () => {
  // 随机数据逻辑  目标 5条数据 [{id: '', name: ''},...]
  const arr = []
  for (let i = 0; i < 5; i++) {
    arr.push(Mock.mock({
      id: '@id',
      name: '@cname',
      image: '@image(200x100)'
    }))
  }
  return {
    msg: '获取数据成功 from mockjs',

    result: arr
  }
})

// 模拟 我的收藏 /member/collect

/**
 * config 得到的是真实API的请求数据
 * {
 *   "url": "http://pcapi-xiaotuxian-front-devtest.itheima.net/member/collect?page=1&pageSize=4&collectType=1",
 *   "type": "GET",
 *   "body": null
 * }
 * 思考: 怎么从url中取出数据?  正则?
 * 使用node.js的内置模块 querystring  qs.parse(str[, sep[, eq[, options]]])
 * <p/>
 * /\/member\/collect|browseHistory/  匹配 /member/collect 或 /member/browseHistory
 */
Mock.mock(/\/member\/collect|browseHistory/, GET, (config) => {

  // querystring    page=1&pageSize=4&collectType=1  -->  {page: '1', pageSize: '4',...}
  //                foo=1&bar=23&bar=12     --> {foo: '1', bar: ['23', '12']}
  // Tips: 从字符串取出的值, 都是字符串类型, 有时候需要用到类型转化
  const querystring = config.url.split('?')[1]
  const queryObject = qs.parse(querystring)
  // console.log(queryObject)

  const items = []
  for (let i = 0; i < +queryObject.pageSize; i++) {
    items.push(Mock.mock({
      id: '@id',
      name: '@ctitle(10, 20)',   // @ctitle(10, 20) 中文文字, 在10-20个之间,
      desc: '@ctitle(4, 10)',
      price: '@float(100, 200, 2, 2)',  // @float(min, max, dmin, dmax)  保留两位小数, 在100~200之间
      // http://zhoushugang.gitee.io/erabbit-client-pc-static/uploads/clothes_goods_7.jpg
      picture: `http://zhoushugang.gitee.io/erabbit-client-pc-static/uploads/clothes_goods_${Mock.mock('@integer(1, 8)')}.jpg`
    }))
  }

  const counts = 35

  return {
    msg: '获取数据成功 from mockjs',
    result: {
      counts,
      pageSize: +queryObject.page,  // +queryObject.page 使用一个 + 号, 字符串转为数字
      page: +queryObject.pageSize,
      items
    }
  }
})

export default Mock
